import { request } from "../../request/index.js";
// pages/category/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 左侧的菜单数据
    leftMenuList:[],
    // 右侧的商品数据
    rightContent:[],
    currentIndex:0
  },
  Cates:[],
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    /**
     * 0 web中的本地存储和小程序中的本地存储的区别
        *   1 写代码的方式不一样
        *      web:localStorage.setItem("key","value")  localStorage.getItem("key")
        * 小程序中: wx:setStorageSync("key","value");    wx.getStorageSync("key");
     *      2 存储的时候  有没有做类型转换
     *        web：不管存储的是什么类型，最终都会先调用toString()，把数据变成了字符串再存入进去
     *      小程序: 不存在 类型转换   存的是什么数据类型，获取的时候就是什么数据类型
     */
    // 1. 先判断一下本地存储中有没有旧的数据
            // 本地存储数据  {time:Date.now(),data:[...]}
    // 2. 没有旧的数据  直接发送请求
    // 3. 有旧的数据 同时 旧的数据没有过期 就使用 本地存储中的旧数据即可

    // 业务代码实现
    const Cates = wx.getStorageSync("cates");
    if(!Cates){
      // 不存在  发送请求获取数据
      this.getCates();
    }else{
      // 有旧的数据
      // 设置数据过期时间，10s
      if(Date.now()-Cates.time>1000*10){
        // 重新发送请求
        this.getCates();
      }else{
        this.Cates = Cates.data;
        let leftMenuList=this.Cates.map(v=>v.cat_name);
        let rightContent=this.Cates[0].children;
        this.setData({
          leftMenuList,
          rightContent
        })
      }
    }
  },
  async getCates(){
    // request({url:"/categories"})
    // .then(res=>{
    //   // 将数据赋给Cates
    //   this.Cates=res.data.message;

    //   // 将数据存入本地存储中
    //   wx.setStorageSync("cates",{time:Date.now(),data:this.Cates});
    //   // 构造左侧的大菜单数据
    //   // map，映射，即原数组映射成一个新的数组
    //   let leftMenuList=this.Cates.map(v=>v.cat_name);
    //   let rightContent=this.Cates[0].children;
    //   this.setData({
    //     leftMenuList,
    //     rightContent
    //   })
    // })
    this.Cates = await request({url:"/categories"});
    // 将数据存入本地存储中
    wx.setStorageSync("cates",{time:Date.now(),data:this.Cates});
    // 构造左侧的大菜单数据
    // map，映射，即原数组映射成一个新的数组
    let leftMenuList=this.Cates.map(v=>v.cat_name);
    let rightContent=this.Cates[0].children;
    this.setData({
      leftMenuList,
      rightContent
    })
  },
  // 左侧菜单栏点击事件
  handleItemTap(e){
    let rightContent=this.Cates[e.currentTarget.dataset.index].children;
    this.setData({
      rightContent,
      currentIndex:e.currentTarget.dataset.index,
      scrollTop:0
    })
  }
})